﻿#region 참조 네임스페이스

using Skying.Windows.API;
using System;
using System.Drawing;

#endregion

namespace Skying.Resources
{
	/// <summary>
	/// 비트맵 리소스를 구성하는 클래스로 <see cref="Skying.Resources.Resource"/>로부터 파생된다.
	/// </summary>
	public class BitmapResource : Resource
	{
		#region 프로퍼티

		/// <summary>
		/// 비트맵 리소스의 <see cref="System.Drawing.Bitmap"/>을 가져온다.
		/// </summary>
		public Bitmap Value
		{
			get;
			private set;
		}

		#endregion

		#region 생성자/소멸자

		public BitmapResource(IntPtr moduleHandle, IntPtr type, IntPtr name)
			: base(moduleHandle, type, name)
		{
			
		}

		#endregion

		#region 리소스

		/// <summary>
		/// 비트맵 리소스를 구성한다.
		/// </summary>
		public override void CombineResource()
		{
			// 모듈로부터 비트맵에 대한 핸들을 로드한다.
			IntPtr hBitmap = User32.LoadBitmap(base._MODULE_HANDLE, this.NameHandle);

			if (!hBitmap.Equals(IntPtr.Zero))
			{
				// 비트맵 핸들로부터 비트맵을 가져온다.
				Bitmap bitmap = Image.FromHbitmap(hBitmap);

				this.Value = bitmap;

				Gdi32.DeleteObject(hBitmap);
			}
		}

		#endregion
	}
}